package cn.sylinx.hbatis.ext.starter.util;

import java.io.Serializable;

import cn.sylinx.hbatis.db.common.FS;
import cn.sylinx.hbatis.db.common.ITransaction;
import cn.sylinx.hbatis.ext.common.repository.FluentSqlSupport;
import cn.sylinx.hbatis.ext.mirage.repository.DaoService;
import cn.sylinx.hbatis.kit.Ret;

public interface SimpleDaoService extends FluentSqlSupport {

	/**
	 * 数据源切换
	 * 
	 * @param ds
	 * @return
	 */
	SimpleDaoService ds(String ds);

	<T> Ret addWithRet(T t);
	
	<T> int update(T t);

	<T> int delete(T t);

	<T> int deleteByPk(Object id, Class<T> clz);

	<T> T get(Object id, Class<T> clz);

	<T> Serializable addObject(T t);

	<T> boolean justAdd(T t);

	/**
	 * 事务处理
	 * 
	 * @param transactions
	 * @return
	 */
	public boolean transaction(ITransaction transactions);

	/**
	 * 事务处理，带返回结果
	 * 
	 * @param transactions
	 * @return
	 */
	public Ret transactionWithReturn(ITransaction transactions);

	/**
	 * 获取当前DaoService，可提供更复杂接口
	 * 
	 * @return
	 */
	public DaoService create();

	/**
	 * 创建FS
	 * @param <T>
	 * @param clazz
	 * @return
	 */
	public <T> FS<T> createFS(Class<T> clazz);
}
